package com.abc;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Set;


import com.abc.generator.TestGral;

import com.abc.files.LoadRepo;
import com.abc.model.PersonYearEffort;
import com.abc.model.Project;

import com.abc.model.ReportRepository;

public class Graphs {

	private static ReportRepository repository = new ReportRepository();

	public static void start() {

		initRepo();

		runMenu();

	}

	private static void runMenu() 
	{
		//Menu
		int operation;
		do
		{
			Scanner input = new Scanner(System.in);
			System.out.println("Menu główne aplikacji B");
			System.out.println("1- generuj wykres kołowy\n"
					+ "2- generuj wykres słupkowy\n"
					+ "3- odśwież dane\n4 - exit");
			System.out.println("Wybierz opcję");
			operation = input.nextInt();
			if (operation==1)
			{
				Set<String> listOfNames = repository.getDevNames();
				System.out.println("Szukane nazwisko.");
				
				BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
				
				String theDeveloper;
				try {
					theDeveloper = in.readLine();
					TestGral wynik = new TestGral(repository.getAllEffortsForEmployee(theDeveloper));
					wynik.setVisible(true);
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
				//				wygenerowanie wykresu kołowego
				System.out.println("1-Powrót do menu \n"
						+ "Tu jest wykres kołowy"
						+ "4 - exit");
				System.out.println("Wybierz opcję");
				operation = input.nextInt();
				if ((operation!=1)&(operation!=4))
				{
					do
					{
						System.out.println("Nie ma takiej opcji wpisz ponownie");
						operation = input.nextInt();
						
					}while((operation!=1)&(operation!=4));
				}
			}
			else if (operation==2)
			{
				//				wylistowanie projektów
				//				wygenerowanie wykresu słupkowego	
				System.out.println("1-Powrót do menu \n"
						+ "Tu jest wykres słupkowy!"
						+ "4 - exit");
				System.out.println("Wybierz opcję");
				operation = input.nextInt();
				if ((operation!=1)&(operation!=4))
				{
					do
					{
						System.out.println("Nie ma takiej opcji wpisz ponownie");
						operation = input.nextInt();
						
					}while((operation!=1)&(operation!=4));
				}

			}
			else if (operation==3)
			{
				//				ponowne wczytanie danych
				System.out.println("Dane zostały ponownie wczytane");
				System.out.println("1-Powrót do menu \n"
						+ "4 - exit");
				System.out.println("Wybierz opcję");
				operation = input.nextInt();
				if ((operation!=1)&(operation!=4))
				{
					do
					{
						System.out.println("Nie ma takiej opcji wpisz ponownie");
						operation = input.nextInt();
						
					}while((operation!=1)&(operation!=4));
				}
			}
			else if (operation==4)
			{
				//				kończenie aplikacji				
			}
			else 
			{
				System.out.println("Niepoprawna operacja! Wybierz jeszcze raz!");				
			}
		} 
		while (operation!=4);
	}	


	private static void initRepo() 
	{
		repository = new ReportRepository();
		LoadRepo loader = new LoadRepo();
		String folder = "Dane_testowe";
		boolean loaded = loader.addFilesToRepo(repository, folder);
		if(!loaded) {
			System.out.println("no files in : " + folder);
		}
	}

	/*private static void listDevs() {
		Map<String, Project> projects = repository.getProjects();
		Project projectOne = projects.get("1");
		Set<String> years = projectOne.getProjectYears().keySet();
		for(String year : years) {
			Collection<PersonYearEffort> efforts = projectOne.getProjectYears().get(year).getDeveloperYearEfforts();
			for(PersonYearEffort devEffort : efforts) {
				System.out.println(devEffort.toString());

			}

		}
	}*/

}



